package cn.demoncat.util.mybatis.base;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 报表数据Dao
 * <br/>
 * 注意：建表时如果只取count或sum之一，相应的接口就无法调用
 * 
 * @author 延晓磊
 *
 * @since 2019年12月10日
 */
public interface BaseReportDao<T extends BaseReportEntity<T,P>, P extends Serializable> extends BaseDao<T, P> {

	/**
	 * 统计 - 总数
	 * 
	 * @param condition
	 * @return SUM(count)
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年10月19日
	 */
	long countCount(Map<String,Object> condition);

	/**
	 * 统计 - 总额
	 * 
	 * @param condition
	 * @return SUM(sum)
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年10月19日
	 */
	BigDecimal countSum(Map<String,Object> condition);
	
	/**
	 * 图表 - 总数
	 * 
	 * @param condition
	 * @return SUM(count)
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年10月19日
	 */
	List<T> chartCount(Map<String,Object> condition);
	
	/**
	 * 图表 - 总额
	 * 
	 * @param condition
	 * @return SUM(sum)
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年10月19日
	 */
	List<T> chartSum(Map<String,Object> condition);
	
	/**
	 * 图表 - 总数,总额
	 * 
	 * @param condition
	 * @return SUM(count),SUM(sum)
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年10月19日
	 */
	List<T> charts(Map<String,Object> condition);
	
}